home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / nn.zip / PACK_SUB.C < prev    next >
Encoding:
C/C++ Source or Header  |  1989-12-31  |  1.2 KB  |  69 lines

  1. /*
  2.  * pack subject by eliminating RE prefixes and - (nf) suffixes
  3.  */
  4.  
  5. #include "config.h"
  6.  
  7. pack_subject(dest, src, re_counter_ptr, max_length)
  8. register char *dest, *src;
  9. int *re_counter_ptr, max_length;
  10. {
  11.     int re;
  12.     char *start_dest;
  13.     register char *max_dest;
  14.     
  15.     re = 0;
  16.     start_dest = dest;
  17.  
  18.     if (src) {
  19.     max_dest = dest + max_length;
  20.     
  21.     while (*src) {
  22.         if (isspace(*src)) {
  23.         src++;
  24.         continue;
  25.         }
  26.         
  27.         /* count and remove 'Re: Re: ...' */
  28.  
  29.         if (*src != 'R' && *src != 'r') break;
  30.         *dest++ = *src++;
  31.         
  32.         if (*src != 'e' && *src != 'E') break;
  33.         *dest++ = *src++;
  34.  
  35.         if (*src == ':' || *src == ' ') {
  36.         src++;
  37.         dest = start_dest;
  38.         re++;
  39.         continue;
  40.         }
  41.         
  42.         if (*src != '^') break;
  43.         
  44.         src++;
  45.         dest = start_dest;
  46.         
  47.         while (isdigit(*src)) *dest++ = *src++;
  48.         if (dest == start_dest) 
  49.         re++;
  50.         else {
  51.         *dest = NUL;
  52.         dest = start_dest;
  53.         re += atoi(dest);
  54.         }
  55.         if (*src == ':') src++;
  56.     }
  57.     
  58.     while (*src && dest < max_dest) {
  59.         if (*src == '-' && strncmp("- (nf)", src, 5) == 0) break;
  60.         *dest++ = *src++;
  61.     }
  62.     }
  63.     
  64.     *dest = NUL;
  65.     *re_counter_ptr = (char)re;
  66.     
  67.     return dest - start_dest;
  68. }
  69.